// pages/MyList/Card/Card.js
const app = getApp()

var api = require('../../../config/api.js');
var keys = require('../../../config/keys.js');
var amap = require('../../../libs/amap-wx.130.js');

Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 存放传过来的订单数据
        // item: [],
        // 工单号
        workOrderCode: '',
        // 电工编号
        electricianCode: '',
        // 电工所在省份
        workOrderArriveProvince: '',
        // 电工所在城市
        workOrderArriveCity : '',
        // 电工所在区县
        workOrderArriveRegion: '',
        // 电工所在详细地址
        workOrderArriveAddress: '',
        // 电工所在经纬度
        workOrderArriveLongitude: '',
        workOrderArriveLatitude: '',
        // 电工到场照片
        workOrderArriveImg: '',
    },

    // 上传图片
  onUploadImage: function () {
    this.uploadFile({
      fileType: 'image', // 文件类型
      successCallback: (fileUrl) => {
        console.log('上传图片地址:', fileUrl);
        this.setData({
            workOrderArriveImg: fileUrl
        });
      },
      failCallback: (error) => {
        console.error('上传失败:', error);
      }
    });
  },
  // 通用文件上传函数
  uploadFile: function (options) {
    const {
      filePath,
      fileType, // 文件类型
      sourceType = ['album', 'camera'], // 选择文件来源
      count = 1, // 可选择的文件数量
      name = 'file', // 后端接收文件的字段名
      successCallback, // 上传成功后的回调
      failCallback // 上传失败后的回调
    } = options;
    if (filePath) {
      console.log('已有文件')
      wx.uploadFile({
        url: api.uploadFile,
        filePath: filePath, // 本地文件路径
        name: name, // 后端接收文件的字段名
        success: (uploadResult) => {
          const data = JSON.parse(uploadResult.data);
          console.log('上传文件结果:', data);
          if (data.code === 200) {
            wx.showToast({
              title: '上传成功',
              icon: 'success'
            });
            if (typeof successCallback === 'function') {
              successCallback(data.data); // 执行成功回调，传入文件地址
            }
          } else {
            wx.showToast({
              title: data.message || '上传失败',
              icon: 'none'
            });
            if (typeof failCallback === 'function') {
              failCallback(data);
            }
          }
        },
        fail: (error) => {
          console.error('上传失败:', error);
          wx.showToast({
            title: '上传失败，请重试',
            icon: 'none'
          });
          if (typeof failCallback === 'function') {
            failCallback(error);
          }
        }
      });
    } else {
      console.log('选择文件')
      
      // 选择文件
      wx.chooseImage({
        count: count,
        type: fileType,
        success: (chooseResult) => {
          const filePath = chooseResult.tempFiles[0].path; // 获取文件路径
          console.log('选择的文件路径:', filePath);

          // 上传文件到服务器
          wx.uploadFile({
            url: api.uploadFile, // 上传接口
            filePath: filePath, // 本地文件路径
            name: name, // 后端接收文件的字段名
            success: (uploadResult) => {
              const data = JSON.parse(uploadResult.data);
              console.log('上传文件结果:', data);
              if (data.code === 200) {
                wx.showToast({
                  title: '上传成功',
                  icon: 'success'
                });
                if (typeof successCallback === 'function') {
                  successCallback(data.data); // 执行成功回调，传入文件地址
                }
              } else {
                wx.showToast({
                  title: data.message || '上传失败',
                  icon: 'none'
                });
                if (typeof failCallback === 'function') {
                  failCallback(data);
                }
              }
            },
            fail: (error) => {
              console.error('上传失败:', error);
              wx.showToast({
                title: '上传失败，请重试',
                icon: 'none'
              });
              if (typeof failCallback === 'function') {
                failCallback(error);
              }
            }
          });
        },
        fail: (err) => {
          console.error('选择文件失败:', err);
          wx.showToast({
            title: '选择文件失败',
            icon: 'none'
          });
          if (typeof failCallback === 'function') {
            failCallback(err);
          }
        }
      });
    }
  },

    

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 获取用户位置
        this.getMapInfo();

        // 从我的工单页跳转时，传递相应参数
       this.setData({
        workOrderCode: options.workOrderCode,
        // 可以用本地存储的电工编号来做
        electricianCode: options.electricianCode,
       })
    },

    // 获取用户地理位置
    getMapInfo: function(){
                var that = this;
                var myAmapFun = new amap.AMapWX({key:keys.amapKey});
                myAmapFun.getRegeo({
                  success: function(data){
                    console.log('返回的地理位置信息', data[0])
                    const LocationInfo = data[0].regeocodeData.addressComponent
                    that.setData({
                        workOrderArriveProvince: LocationInfo.province,
                        workOrderArriveCity: LocationInfo.city,
                        workOrderArriveRegion: LocationInfo.district,
                        workOrderArriveAddress: LocationInfo.township + LocationInfo.streetNumber.street +  LocationInfo.streetNumber.number,
                        workOrderArriveLongitude: data[0].longitude,
                        workOrderArriveLatitude: data[0].latitude,
                    });
                  },
                  fail: function(info){
                  }
                })
      },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
        this.popup = this.selectComponent("#popup");
    },
    showPopup() {
        // 非直辖市，city的值不为空
        var city = this.data.workOrderArriveCity;
        // 直辖市，city的值为空，就用省来代替，主要目的是为了后台请求接口时，能够上传正确参数
        if(this.data.workOrderArriveCity == ''){
            city = this.data.workOrderArriveProvince;
        }
        wx.getStorage({
            key: 'electricianCode',
            success: (RES) => {
                this.setData({
                    electricianCode: RES.data.electricianCode
                })
                wx.request({
                    url: api.arrive,
                    method: 'POST',
                    data:{
                      workOrderCode: this.data.workOrderCode,
                      electricianCode: this.data.electricianCode,
                      workOrderArriveProvince: this.data.workOrderArriveProvince,
                      workOrderArriveCity: city,
                      workOrderArriveRegion: this.data.workOrderArriveRegion,
                      workOrderArriveAddress: this.data.workOrderArriveAddress,
                      workOrderArriveLongitude: this.data.workOrderArriveLongitude,
                      workOrderArriveLatitude: this.data.workOrderArriveLatitude,
                      workOrderArriveImg: this.data.workOrderArriveImg,
                    },
                    success: (res) => {
                        // 问题，高德地图在直辖市时，他返回的city是一个空数组，而不是和省份一样的值
                        console.log('workOrderArriveCity请求后台',this.data.workOrderArriveCity)
          
                        if(res.data.code == 200){
                            console.log('打卡成功')
                            // 打卡成功再显示弹窗
                            this.popup.showPopup();
                            wx.navigateBack();
                        }else{
                            wx.showToast({
                              title: res.data.mesage,
                              icon: 'none',
                            })
                        }
                    },
                    fail(){
                        wx.showToast({
                          title: '请求网络失败',
                          icon: 'none',
                        })
                    }
                  })
            },
        })

    },
    onClickBtn() {
        this.popup.hidePopup();
      },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

    /**
     * 返回上一页
     */
    toBack: function(){
    },
 
})